/*
	目标: 取得ID的值   即：取得成都的ID

*/
var j=0;
AddressTree["a_record"]=new Array();	//存储记录的记录号

for(i in AddressTree["a_row"])
{
	AddressTree["a_record"][j++]=i;
}
AddressTree.ObjNumber= 1 ;


// 地址选择构造函数
function LightManAddressTree()
{
	var Data = AddressTree; 			//数据记录数据变量
	this.noselectshow=["--请选择--"];
										// 各级不选择显示值
	this.grade=0; 						// 级数
	this.idvalue=0; 					// 选择值的id号
	this.text=""; 						// 地址字符串
	this.listseparator="-"; 			// 地址字符串中的分隔符号
	this.selectName="a_tree"+(AddressTree.ObjNumber++)+"_";

/*

	方法1：getfontpath
	定义地址数据结束
	返回：如[1] 
	传入一个id,返回数组 [id]集
	取得指定当前id的所有子id
*/	
	
	this.getfontpath = function(id)
	{
		// 取得指定记录号的上级路径
		var path = "",upid;
		try
		{
			upid = (isNaN(id) ? 0 : id);
			// 循环
			while(upid != 0)
			{
				var upid = Data["a_row"][upid][1];	// 
				if(path != "" )
				{
					path = upid + "," + path;
				}
				else
				{ 
					path=upid;
				}
			}
		}
		catch(e){};
		
		return eval("["+path+"]");
	}
	
	
	
	
/*
	方法2：selectshowlevel
	建立下列表
*/	
	

	this.selectshowlevel = function(obj,upid,def)
	{
		var selectobj,optionobj,havedef;
		selectobj=document.getElementById(this.selectName+this.grade);		// select ID  对象
	
		if(selectobj)
		{
			document.getElementById(this.selectName+this.grade).options.length=0;
		}
		else
		{
			selectobj=document.createElement("select");
			selectobj.id=this.selectName+this.grade;
			selectobj.grade=this.grade;
			selectobj.obj=this;
			// select 改变值操作
			selectobj.onchange=function()
			{
				if(this.options[this.selectedIndex].value != "")
				{
					this.obj.selectshow(obj,this[this.selectedIndex].value);
				}
				else
				{
					if(this.obj.grade>0)
					{
						for(var i= this.grade+1; i < this.obj.grade-1; i++)
						{
							var df=document.getElementById(this.obj.selectName + i);
							df.options.length=0;
							defaultoption(this.obj,df,i);
						}
						//取得值
						getvalue(this.obj);
					}
				}
				
				
			}
		}


		// 调用函数 defaultoption  第一个默认选项
		//alert(this.grade);
		defaultoption(this,selectobj,this.grade);


		// 显示当前级别下数据
		if( upid >= 0)
		{
			for(var j=0;j<Data["a_record"].length;j++)
			{
				thisrecord=Data["a_row"][Data["a_record"][j]];
				if(thisrecord[1] == upid)
				{
					optionobj=document.createElement("option");
					optionobj.text=thisrecord[0];
					optionobj.value=Data["a_record"][j];
					selectobj.options.add(optionobj);
					if(def==Data["a_record"][j]) havedef=true;
				}
			}
		}

		if(havedef) selectobj.value=def;
	
		return selectobj;
	}
/*
	方法3：selectshow
	输出下拉菜单
	参数 1 容器对象, 2 下拉菜单的起始ID   如：	a_row["25"]=["云南",0,0];  中的  25 
*/	

	this.selectshow = function(obj,id)
	{
		
		
		var selectobj,optionobj,thisrecord;		// 定义变量   下拉菜单，下拉选项，当前选项
		var lastgrade,tempid = id,tempgrade;
		var fontpath = this.getfontpath(id);		// 定义变量
		tempgrade = this.grade;
		this.grade=0;
		//显示选中前部分内容
		for (var i = 0;i < fontpath.length; i++)
		{
			if( ! document.getElementById( this.selectName + this.grade))
			{
				if(i<fontpath.length-1)
					this.Add(obj,this.selectshowlevel(obj,fontpath[i],fontpath[i+1]));
				else
					this.Add(obj,this.selectshowlevel(obj,fontpath[i],id));
					
			}
			this.grade ++;
			
		}
	
		//显示选中后部分内容
		do{
			lastgrade=this.selectshowlevel(obj,tempid);
			tempid=lastgrade.value;
			if (tempid=="")tempid=-1;
			this.Add(obj,lastgrade);
			this.grade++;
			
		}
		while( lastgrade.options.length >0 );

		//删除多余选项
		for(i=this.grade-1;i<tempgrade-1;i++){
			obj.removeChild(document.getElementById(this.selectName+i));
		}
		//取得值
		getvalue(this);
	}
/*
	方法4：Add
	
*/	

	this.Add=function(obj,s){
		if(s.options.length>0 && !document.getElementById(s.id)) 	obj.appendChild(s);
	}
	
/*
	函数1 getvalue
	获取所选择选择的值

*/	
	function getvalue(obj)
	{
		var sel;
		obj.text="";
		obj.idvalue=0;
		for(var i = 0; i < obj.grade-1;i++)
		{
			sel=document.getElementById(obj.selectName+i);
			if(sel.value!="")
			{
				obj.text+=(obj.text.match("\\S")==null?"":obj.listseparator)+ sel.options[sel.selectedIndex].text;
				obj.idvalue=sel.options[sel.selectedIndex].value;
			}else{break;}
		}
		// 更新 idvalue
		//alert(obj.idvalue);
		updateid();
	}
	
/*
	函数2 defaultoption
	级别显示数据

*/	
	
	function defaultoption(obj,sobj,g)
	{
		
		try
		{
			if(obj.noselectshow[g])
			{
				optionobj=document.createElement("option");
				optionobj.text= obj.noselectshow[g];
				optionobj.value= "";
				sobj.options.add(optionobj,0);
			}
		}
		catch(e){}
	}
	
} 

